<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\AdminUserRequest;
use App\Models\AdminUser;
use Auth;
use Hash;
use Illuminate\Http\Request;

class AdminUserController extends Controller
{
    //列表页
    public function index(AdminUser $adminuser){
        // $adminusers = $adminuser->orderBy('id','desc')->get();
        $adminusers = $adminuser->get();
        $data = [
            'adminusers'=>$adminusers,
        ];
        return view('admin.adminuser.index',$data);
    }
    // 添加+编辑
    public function add(AdminUser $adminuser){
        // 使用策略
        $this->authorizeForUser(Auth::guard('admin')->user(),"modify",$adminuser);
        
        $data=[
            'adminuser'=> $adminuser
        ];
        return view('admin.adminuser.add',$data);
    }
    // 保存
    public function save(AdminUserRequest $request,AdminUser $adminuser){
        // 首先获取验证完成后的内容
        $data = $request->validated();


        // 开始进行判断id  有（编辑）|没有（添加）
        if($adminuser->id){
            // 在编辑模式下，判断用户密码，有则加密
            if($data['password']){
                $data['password']=Hash::make($data['password']);
            }else{
                // 从数组中删除指定的值
                unset($data['password']);
            }
            // 调用adminuser类的update方法，并将通过验证的数据更新
            $adminuser->update($data);
        }else{
            //使用Hash类对密码进行加密操作
            $data['password']=Hash::make($data['password']);
            // 设置用户状态
            $data['state']=AdminUser::NORMAL;
            // 调用adminuser类的creat方法，并将通过验证的数据传入
            $adminuser->create($data);
        }


        // dump($is);
        alert("添加管理员成功");
        return redirect()->route('admin.adminuser');
    }
    // 移除
    public function remove(AdminUser $adminuser){
        $this->authorizeForUser(Auth::guard('admin')->user(),"modify",$adminuser);
        $adminuser->delete();
        alert("操作成功");
        return back();
    }
    // 状态切换
    public function state(Adminuser $adminuser){
        $this->authorizeForUser(Auth::guard('admin')->user(),'remove',$adminuser);
        // 获取用户的反向状态，使用三元
        $new_state = ($adminuser->state==AdminUser::NORMAL) ? AdminUser::BAN : AdminUser::NORMAL;
        // 将新状态赋值给数据模型
        $adminuser->state = $new_state;
        // 保存修改后的结果
        $adminuser->save();
        alert('操作成功');
        return back();
    }
}
